package com.cdd.timer;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

/**
 * @Description:
 *   应用小顶堆，严重依赖系统时间，局限性大
 * @Author: cdd
 * @Date: 2022/1/5 18:31
 * @Version 1.0
 */
public class TimerTest {

    public static void main(String[] args) {
        Timer t = new Timer();  // 任务已经启动了

        for (int i = 0; i < 2; i++) {
            TimerTask task = new FooTimerTask("foo" + i);

            // 真正的执行时间，取决于上一次任务的结束时间
//            t.schedule(task, new Date(), 2000);

            // 严格按照预设时间执行
            t.scheduleAtFixedRate(task, new Date(), 2000);

            // 单线程造成任务阻塞，解决：可以在run()方法中新创建线程去执行
        }
    }
}


class FooTimerTask extends TimerTask {

    private String name;

    public FooTimerTask(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        try {
            System.out.println("name" + name + ",startTime=" + new Date());
            Thread.sleep(3000);
            System.out.println("name" + name + ",endTime=" + new Date());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
